草庐IT

Java BufferedImage 内存消耗

全部标签

c++ - 内存分配器范围的设计

我一直在阅读关于内存管理的不同文章,为我希望我的架构如何工作做准备,我最担心的是如何在整个代码库中使用、创建和处理分配器。问题之一是我的设计总是在全局范围内具有分配器,因为我没有典型的单例设计来包含分配器,它们没有真正的居住地。由于使用全局变量的所有典型问题,我想避免为此使用全局变量。这让我想到了这样的设计void*operatornew(size_tsize,uint32_ttype){returngAllocator.Alloc(size,type);}这将导致头文件中只有新定义,声明在.cpp中。然后,此.cpp文件将具有gAllocator,仅在.cpp文件中(并且可以在除新调

c++ - 读取一个 200 MB 的 json 文件需要 1.5 GB 的内存

我正在使用C++中的json_spirit库来解析一个200mb的json文件。令我惊讶的是,当在我的程序中读入内存时,使用了1.5GB的RAM。这是反序列化json时预期的结果吗?这是我在json文件中加载的方式:std::ifstreamistream(path.c_str());json_spirit::mValueval;json_spirit::read(istream,val); 最佳答案 你可以试试rapidjson.它针对内存使用和性能进行了优化。通过使用原位解析选项(即它更改解析的源字符串),每个JSON值仅产生1

c++ - 内存屏障 : How to ensure initialization writes are seen by worker threads?

我对使用内存屏障/栅栏进行编程还很陌生,我想知道我们如何才能保证设置写入在随后在其他CPU上运行的辅助函数中可见。例如,请考虑以下内容:intsetup,sheep;voidSetupSheep()://RunonceCPU1:setup=0;...muchlaterCPU1:sheep=9;CPU1:std::atomic_thread_fence(std::memory_order_release);CPU1:setup=1;之后运行(不是并发),很多很多次:voidManipulateSheep():CPU2:intmySetup=setup;CPU2:std::atomic_t

c++ - Python-C++ 接口(interface)中的内存泄漏?

我有一段带有python-C++接口(interface)的C++代码,需要使用python列表作为输入重复调用。我发现即使是以下虚拟进程也会导致内存泄漏:在python中:a=[1.0]*1000forcinrange(1000):dummy(a,1)在C++中:staticPyObject*dummy(PyObject*self,PyObject*args){Py_RETURN_NONE;}我是否遗漏了这里的任何内容,所以它引入了内存泄漏? 最佳答案 没关系,你传递给你的c方法的对象只是借用的,即你不必在返回之前减少对象的引用计

c++ - 删除 std::vector 的元素(并更改大小)而不影响分配的内存

我正在使用如下代码:constintMY_SIZE=100000;std::vectorv;v.reserve(MY_SIZE);//addnomorethanMY_SIZEelementstothevectorf(v);v.clear();//again,addnomorethanMY_SIZEelementstothevectorf(v);v.clear();////etc...//我的代码的重点是存储MY_SIZEdouble的然后执行操作f(std::vector)在那些元素上。在我填满vector并执行操作后,我想去掉所有元素(并将std::vector::size()重置为

c++ - 不分配任何 char 内存的 const 字符串构造函数?

我正在尝试优化我为处理应用程序协议(protocol)的多个层而编写的一些代码。我自由使用了std::string类,力求简单而不是过早的优化。该应用程序太慢了,valgrind和gprof显示我花费了大量时间来复制构造字符串,因为缓冲区在我的堆栈中向上移动。在我看来,在将字符从系统缓冲区复制到我的最低应用程序缓冲区之后,我应该能够避免再复制数据:毕竟,它在堆栈向上移动时不会发生变化。我的协议(protocol)格式是一个“传输”,由一个或多个以换行符结尾的记录组成,每个记录由几个制表符分隔的字段组成,并以特殊的结尾token。例如RECORD1\tHAS\tTHESE\tFIELDS

c++ - GCC 消耗太多内存!!图形工具

编译时graph-toolgcc编译器消耗了超过7Gb的内存,并且在消耗越来越多之后什么也没有发生,我被迫停止编译。我试图嵌入acompilersuffix:CFLAGS="$CFLAGS--paramggc-min-expand=0--paramggc-min-heapsize=8192"但我无法将它带入./configure过程。有人知道这个问题吗?(应该没什么区别,但我的操作系统是Archlinux-64)编辑(1):我现在能够添加CFLAGS进行配置,但它继续消耗无限数量的内存。我的Gcc版本是4.8.2!编辑(2):新版图形工具(2.2.28)解决了我的问题,因为他们修复了这

c++ - 使用 boost::asio ssl 服务器减少每次连接的内存使用

我正在使用boost::asio开发ssl服务器。我希望尽可能减少每个ssl连接的内存使用量。我的代码主要来源于boost::asio::sslexample服务器示例。这意味着我将session存储为Session类对象,它具有sslContext属性、已注册的read_handler等(与示例中的情况差不多)我能找到的所有优化都是启用SSL_MODE_RELEASE_BUFFERS和SSL_OP_NO_COMPRESSION。现在我每个连接大约55kB。但是根据thisthread,您可以将内存使用量减少到11kB。还有什么我可以做的来减少这种使用吗?操作系统:Ubuntu11.0

c++ - 从另一个线程中删除对齐的内存

(C++)我在堆上分配了内存对齐的实例,然后在另一个线程中删除它们。代码如下所示:ALIGNEDclassObj{public:ALIGNED_NEW_DELETE...};Thread1:Obj*o=newObj;//overloadednewforalignedmemoryallocationpostTask(o);Thread2:o->runTask();deleteo;//overloadeddeleteforalignedmemorydeletion//"delete"statementcrashes线程2中的删除语句将在VisualStudio2013(_BLOCK_TYP

c++ - 我的应用程序中的内存增加

我正在学习C++,我需要一些关于如何在不使用指针时清理内存的建议。我有一个后台Blackberry10应用程序,它在停止前的内存限制为3MB,我的应用程序由于达到此限制而被停止,我无法找出原因。我已经将增加内存的范围缩小到一个函数——如果我不调用这个函数,内存就不会增加。该函数使用QVariant、QVariantList、QVariantMap、QString,它们是在创建类时在函数外部声明的(即QVariantMap映射),在我访问函数中的这些对象之前,我在每个对象上调用.clear()我的理解是应该清理所持有的内存,我也在函数中使用int,它也在它之外声明。该函数非常大并且正在调